With the proliferation of information exchange across the Internet and the storage of sensitive data on open networks, cryptography has become an important feature of computer security. In many cases data is secured using a symmetric cipher system. Public-key systems are used for digital signatures and for secure symmetric key exchange between users. However, regardless of whether a user deploys a symmetric and/or a public-key system, the security is dependent on the secrecy of the secret or private key, respectively. Because of the large size of a cryptographically-strong key, it is not feasible to require a user to remember and enter the key each time it is required. Instead, the user is typically required to choose an easily remembered passcode that is used to encrypt the cryptographic key. To retrieve the cryptographic key, the user is prompted to enter the passcode, which will then be used to decrypt the key.